[アップデート] AWS Transfer for SFTP で EIP およびセキュリティグループがサポートされました!
本日のアップデートで AWS Transfer for SFTP にセキュリティグループと EIP を設定できるようになりました!
なにが嬉しいのか
今回のアップデートによって以下のようなことが簡単に設定できるようになりました。
- パブリックアクセスで特定 IP のみ許可したい
- AWS Transfer for SFTP の IP を固定化したい
過去に「特定 IP の許可」や、「接続先 IP アドレスの固定化」について、NLB や NACL を利用して実装する方法をご紹介しました。
今回、EIP および、セキュリティグループのサポートによって以下のように、よりシンプルに実装できるようになります。
さっそく試してみる
事前準備
今回は事前に以下の環境を準備しておきました。
- EIP
- 今回はマルチ AZ 構成のため 2 つ
- パブリックサブネット
- セキュリティグループ
- Route53(パブリックホストゾーン)
- S3 バケット
- IAM ロール
- 信頼関係に
transfer.amazonaws.com
を設定したもの
- 信頼関係に
AWS Transfer for SFTP の作成
AWS Transfer for SFTP のダッシュボードを開き、create server
をクリックします。EIP、セキュリティグループを使用しますので 「VPC」 を選択します。hostname は事前に作成しておいたパブリックホストゾーン内で指定しておくと作成時に自動でレコード登録してくれるので便利です。Access は 「Internet Facing」 を指定し、作成したい場所の VPC および、サブネットを指定します。
そして、IPv4 Addresses のブルダウンに事前作成しておいた EIP が選択可能になっていますので、それぞれ指定します。
あとはデフォルトのまま create server
をクリックして作成します。
status が Online
になったら作成完了です。表示されている 2 つの IP アドレスが事前に取得していた EIP です。
接続確認のためユーザー追加が必要ですが、今回の本筋ではないので手順は割愛します(過去のエントリーを参照ください。)
名前解決の確認
dig
で名前解決を確認すると、EIP と SFTP サーバーの CNAME が表示されることが確認できます。
$ dig sftp.marumo.classmethod.info <snip> ;; ANSWER SECTION: sftp.marumo.classmethod.info. 300 IN CNAME s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com. s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com. 60 IN A 18.177.174.200 s-fbebafaa9734454cb.server.transfer.ap-northeast-1.amazonaws.com. 60 IN A 18.176.160.188 <snip>
セキュリティグループ設定
サーバー作成時のメニューではセキュリティグループを指定するような箇所は見当たりませんでした。そのため、サーバー作成直後は VPC デフォルトのセキュリティグループがアタッチされるようです。
VPC デフォルトのセキュリティグループ利用は避けたいので、以下のような特定 IP からの SSH のみを許可したセキュリティグループに変更します。
該当の VPC エンドポイントを選択し、「アクション」 - 「セキュリティグループの管理」 をクリックします。デフォルトセキュリティグループを削除し、先ほどのセキュリティグループを指定して保存します。
接続確認
それでは接続確認してみましょう。
$ sftp -i cm_marumoatsushi.pem sftpuser@sftp.marumo.classmethod.info Connected to sftpuser@sftp.marumo.classmethod.info. sftp> ls home sftp> pwd Remote working directory: /cm-sftp-test-bucket sftp> put test Uploading test to /cm-sftp-test-bucket/test test 100% 0 0.0KB/s 00:00 sftp> ls home test
問題なくアクセスできました!
次にセキュリティグループから、許可していたインバウンドルールを削除します。
この状態で再度アクセスしてみると…
$ sftp -i cm_marumoatsushi.pem sftpuser@sftp.marumo.classmethod.info ssh: connect to host sftp.marumo.classmethod.info port 22: Operation timed out Connection closed. Connection closed
想定どおりアクセス出来なくなりましたので、セキュリティグループは有効に動作していることが確認できましたね。
検証は以上です!
さいごに
AWS Transfer for SFTP の相談において「特定 IP のみでパブリックアクセスさせたい」、または「接続先 IP を固定化したい」という内容は少なくありません。従来は NLB や NACL を使って実現する必要がありましたが、今回のアップデートで非常に簡単に実装できることが確認できました!
パブリック環境での AWS Transfer for SFTP 利用のハードルがグッと下がるアップデートですね!
以上!大阪オフィスの丸毛(@marumo1981)でした!